Channel bonding is a process of communicating information through multiple independent communication channels. The multiple channels are treated as a single virtual channel having greater bandwidth than any individual constituent channel. In one method of channel bonding, a transmitter breaks a data stream into multiple packets of data. The transmitter distributes the packets among the each of the individual channels. The packets are tagged with a sequence number by the transmitter so that the receiver may resequence the packets to reproduce the data stream in the proper order.
The receiver queues in memory received packets that are not yet resequenced. When a packet is lost during transmission, for example due to an error, the receiver awaits arrival of the wayward packet. While waiting, the receiver buffers packets received after the expected arrival time of the lost packet. Eventually, a timer in the receiver runs out of time and signals resumption of resequencing without the lost packet. The wait for a lost packet is a long delay, such as twenty milliseconds or longer. This delay causes further problems with processing of the resequenced data because downstream processing equipment must adapt to variable and excessive delays in data delivery. Thus, conventional receiver systems require a large buffer, a large number of gates, a high-capacity random access memory, and per-channel first-in, first-out circuits to accommodate packet queuing during the long delay.
What is needed is a system, method, and computer product that improves upon traditional channel bonding systems, methods, and computer program products.